#ifndef QUICK_LAUNCH_LINUX_H_
#define QUICK_LAUNCH_LINUX_H_

#include <string>

#include "stdafx.h"

namespace quick_launch {

// Save link to disk.
bool SaveLink(NativeWindow hwnd, const char* filepath, const char* exefile,
              const char* iconfile, int iconindex, const char* params);

// Resolve a quick link and return it's parameters.
bool ResolveLink(NativeWindow hwnd, const char* lpszLinkFile,
                 std::string& path, std::string& params,
                 std::string& iconfile, int& iconindex,
                 std::string& icondata, bool resolve_icon = true);

// Delete a local quick launch from disk.
bool DeleteQuickLaunch(NativeWindow hwnd, const char* path);
bool DeleteQuickLaunch(const char* path);

// Get local path
char* GetLocalPath(NativeWindow hwnd, const char* title,
                   const char* inital_path);

// Select a local quick launch file, and return the full path file name.
bool SelectQuickLaunch(NativeWindow hwnd, char* quick_launch, int size);

// Startup a quick launch.
bool Startup(NativeWindow hwnd, const char* filename);

// Valid a local path.
bool ValidPath(const char* path);

// Get desktop folder of current user.
char* GetDesktopFolder(NativeWindow hwnd);

// Get quick launch folder of current user.
char* GetQuickLaunchFolder(NativeWindow hwnd);

// Get default user data path.
char* GetDefaultDataPath(const char* exefile = NULL);

// Get our specified user-data-dir
char* GetUserDataFolder();

// Create folder
bool CreateFolder(char* path, int size);

// Copy folder
bool CopyFolder(const char* source, const char* dest);

// Get system icons path.
char* GetSystemIconsPath(NativeWindow hwnd, char* path);

// Get user defined icons path.
char* GetUserDefinedIconsPath(NativeWindow hwnd, char* path);

// Get icon data from file.
void GetIconData(const char* iconfile, int index, std::string& icondata);

// Convert image file to ico file.
bool ConvertImageToIcon(const char* imagefile, const char* iconfile);

// Resolve user data dir from parameters.
char* ResolveUserDataDir(const std::string& params, char* userdatadir);

// Get current module absolute file name.
int GetModuleFileName(char* filename, int size);

// Get current exe absolute file name.
int GetExeFileName(char* filename, int size);

bool CopyFile(const char* source, const char* dest);

// Prompt user to select a image file.
bool GetLocalImage(char* imagefile, int size);

// Get chrome icon file.
bool GetDefaultChromeIcon(char* iconfile);

}

#endif